home *** CD-ROM | disk | FTP | other *** search
- /*** LISTING 3 ***/
- /*** ***/
- /*** vect.c ***/
- /*** **************************************** ***/
- /*** *** INITIALIZE SERIAL *** ***/
- /*** **************************************** ***/
- #include "serial.h"
-
- extern int portbase;
-
- void (interrupt far *oldvect)();
-
- void InitSerial (int Com_Port)
- {
- Setvects(Com_Port);
- EnableInt(Com_Port);
- }
-
- /*** ***************************************** ***/
- /*** *** CLOSE SERIAL *** ***/
- /*** ***************************************** ***/
- void CloseSerial (int Com_Port)
- {
- DisableInt();
- Resvects(Com_Port);
- }
-
- /*** **************************************** ***/
- /*** *** SET INTERRUPT VECTORS *** ***/
- /*** **************************************** ***/
- void Setvects (int Com_Port)
- {
- switch (Com_Port)
- {
- case COM1: oldvect = getvect(0x0C);
- setvect(0x0C,ReceiveData);
- break;
-
- case COM2: oldvect = getvect(0x0B);
- setvect(0x0B,ReceiveData);
- break;
-
- case COM3: oldvect = getvect(0x0C);
- setvect(0x0C,ReceiveData);
- break;
-
- case COM4: oldvect = getvect(0x0B);
- setvect(0x0B,ReceiveData);
- }
- }
-
- /*** **************************************** ***/
- /*** *** RESET INTERRUPT VECTORS *** ***/
- /*** **************************************** ***/
- void Resvects (int Com_Port)
- {
- switch (Com_Port)
- {
- case COM1: setvect(0x0C,oldvect);
- break;
-
- case COM2: setvect(0x0B,oldvect);
- break;
-
- case COM3: setvect(0x0C,oldvect);
- break;
-
- case COM4: setvect(0x0B,oldvect);
- }
- }
-
- /*** **************************************** ***/
- /*** *** ENABLE INTERRUPTS *** ***/
- /*** **************************************** ***/
- void EnableInt (int Com_Port)
- {
- int New_Value;
-
- New_Value = inp(portbase + MCR) | EN_INT;
- outp(portbase + MCR,New_Value);
-
- outp(portbase + IER,RX_INT);
-
- if((Com_Port == COM1) || (Com_Port == COM3))
- New_Value = inp(IMR) & IRQ4;
-
- else if((Com_Port == COM2) || (Com_Port == COM4))
- New_Value = inp(IMR) & IRQ3;
-
- outp(IMR,New_Value);
- }
-
- /*** **************************************** ***/
- /*** *** DISABLE INTERRUPTS *** ***/
- /*** **************************************** ***/
- void DisableInt (void)
- {
- int Old_Value;
-
- Old_Value = inp(IMR) | ~IRQ3 | ~IRQ4;
- outp(IMR,Old_Value);
- outp(portbase + IER,0);
-
- Old_Value = inp(portbase + MCR) & ~EN_INT;
- outp(portbase + MCR,Old_Value);
- }
-
-